home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / minix / up1510b.tgz / up1510b / src / lib / posix / rewinddir.c < prev    next >
C/C++ Source or Header  |  1990-07-19  |  761b  |  31 lines

  1. /* rewinddir -- rewind a directory stream    Author: D.A. Gwyn */
  2.  
  3. /*    last edit:    25-Apr-1987    D A Gwyn
  4.  
  5.   This is not simply a call to seekdir(), because seekdir()
  6.   will use the current buffer whenever possible and we need
  7.   rewinddir() to forget about buffered data.
  8. */
  9.  
  10. #include <lib.h>
  11. #include <dirent.h>
  12. #include <unistd.h>
  13.  
  14. #define    DULL (DIR *) NULL
  15. #define    CULL (char *) NULL
  16.  
  17. #ifndef SEEK_SET
  18. #define    SEEK_SET    0
  19. #endif
  20.  
  21. void rewinddir(dirp)
  22. register DIR *dirp;        /* stream from opendir() */
  23. {
  24.   if (dirp == DULL || dirp->dd_buf == CULL || dirp->dd_magic != _DIR_MAGIC) {
  25.     errno = EFAULT;
  26.     return;            /* invalid pointer */
  27.   }
  28.   dirp->dd_loc = dirp->dd_size = 0;    /* invalidate buffer */
  29.   (void) lseek(dirp->dd_fd, (off_t) 0, SEEK_SET);    /* may set errno */
  30. }
  31.